Computer systems are known where execution of an instruction is predicated on some value identified or addressed in the instruction. Computer systems are also known which act on so-called packed operands. That is each operand comprises a plurality of packed objects held in respective lanes of the operand. The degree of packing can vary and for 64 bit operands it is known to provide byte packing (eight objects per 64 bit operand), halfword packing (four objects per 64 bit operand) and word packing (two objects per 64 bit operand). With existing computer systems, when instructions defining such packed operands are predicated, the predication either causes the operation to be carried out on all of the operands or not to be carried out at all. Moreover, condition values are set depending on the results of the operation of an instruction.
There are computer systems where an instruction performs a particular test (e.g. compare for greater than) and sets a single bit for result true/false. Such instructions can be implemented on packed objects. For example, the packed compare instructions in the Intel MMX machine compare the corresponding data objects in the source and destination operands for equality or value greater than, respectively and generate a mask of ones or zeros which are written to the destination operand. Logical operations can use the mask to select elements. There is only a small group of such instructions, and these instructions always have the side effect of setting the true/false flags.